package work.hutool.util;

import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.Week;

import java.time.LocalDate;
import java.util.Date;

/**
 * @author shenminglong@kedacom.com
 * @date 2021-11-29
 *
 * 日期转换的时候 字符串格式不规范 会报异常 ParseException
 */
public class DateUtilTest {

    public static void main(String[] args) {

        String dateStr = "2022-02-19";
        Date date0 = DateUtil.parseDate(dateStr).toJdkDate();

        // 1 指定日期的月初1号
        Date date = DateUtil.parse(dateStr,"yyyy-MM");

        // 2 日期时间偏移 下个月
        Date date_next_month = DateUtil.offset(date , DateField.MONTH, 1);

        // 3 日期时间偏移 按天来
        // DAY_OF_*的实际用处并不在修改日期(修改日期是一样的结果) ，而是在获取具体的天数。
        // offset设置日期偏移的结果是一样 但是get方法中使用，获取的是这一天在是这个周/月/年的第多少天
        date = DateUtil.parse(dateStr,"yyyy-MM-dd");
        DateTime dateTime =new DateTime(date);
        int day1 = dateTime.getField(DateField.DAY_OF_WEEK);
        int day2 = dateTime.getField(DateField.DAY_OF_MONTH);
        int day3 = dateTime.getField(DateField.DAY_OF_YEAR);
        Date date1 = DateUtil.offset(date , DateField.DAY_OF_WEEK, 1);
        Date date2 = DateUtil.offset(date , DateField.DAY_OF_MONTH, 1);
        Date date3 = DateUtil.offset(date , DateField.DAY_OF_YEAR, 1);

        // 4 DateTime 和JDK的Date进行转化
        Date date_new = dateTime.toJdkDate();


        // 5 当前日期的所在年的第一天
        DateTime firstDayOfYear = DateUtil.beginOfYear(date0);
        // dayOfWeek() 判断当前日期属于周几  1表示周日，2表示周一
        int num = DateUtil.dayOfWeek(DateUtil.parse("2022-02-21"));
        // 当前日期的所在周的周一
        DateTime firstDayOfWeek = DateUtil.beginOfWeek(DateUtil.parse("2022-02-21"));

        System.out.println("END");
    }
}
